/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.agi.fs;

import java.io.IOException;

/**
 * Abstração dos objetos graváveis
 * @author renatogrosz@yahoo.com - www.araujogrosz.com.br
 */
public abstract class ObjetoPersistente {

    protected boolean aberto;
    protected String nome;


    public ObjetoPersistente(){
        aberto=false;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 37 * hash + (this.nome != null ? this.nome.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object o){
        ObjetoPersistente outro;
        boolean retorno;
        retorno=false;
        if(o instanceof ObjetoPersistente){
            outro=(ObjetoPersistente) o;
            retorno=outro.nome.equals(nome);
        }
        return(retorno);
    }


    public void abrir() throws IOException {
        if(aberto){
            throw new IOException("Diretorio ja esta aberto");
        }
        aberto=true;
    }

    public void fechar() throws IOException{
        aberto=false;
    }
}
